package py.edu.ucsa.sisalews.services.rest.impl;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import py.edu.ucsa.sisalews.config.SisalewsApplicationContextProvider;
import py.edu.ucsa.sisalews.model.services.impl.UsuarioServiceImpl;
import py.edu.ucsa.sisalews.services.rest.UsuarioRest;

@Path("/usuario")
public class UsuarioRESTImpl implements UsuarioRest {

	private ApplicationContext ctx;

	@Autowired
	UsuarioServiceImpl usuarioService;

	public UsuarioRESTImpl() {
		ctx = SisalewsApplicationContextProvider.getContext();
	}

	@Produces({ "application/json" })
	@GET
	public String listar() {
		return usuarioService.getUsuarios();
	}

	@Consumes({ "application/json" })
	@POST
	@Override
	public String insertar(String usuario) {
		return usuarioService.insertar(usuario);
	}

	@Consumes({ "application/json" })
	@PUT
	@Override
	public String modificar(String usuario) {
		return usuarioService.actualizar(usuario);
	}

	@Path("/cedula/{cedula}")
	@Produces({ "application/json" })
	@GET
	@Override
	public String buscarPorCedula(@PathParam("cedula") Integer cedula) {
		return usuarioService.getUsuarioByCedula(cedula);
	}

	@Path("/nombre/{nombre}")
	@Produces({ "application/json" })
	@GET
	@Override
	public String buscarPorNombre(@PathParam("nombre") String nombre) {
		return usuarioService.getUsuarioByNombre(nombre);
	}

	@Path("/apellido/{apellido}")
	@Produces({ "application/json" })
	@GET
	@Override
	public String buscarPorApellido(@PathParam("apellido") String apellido) {
		return usuarioService.getUsuarioByApellido(apellido);
	}

	@DELETE
	@Override
	public void eliminar(Integer cedula) {
		usuarioService.eliminar(cedula);
	}

}
